﻿namespace Core.Domain.Lexems
{
    public class ConstLexem<T> : TabledLexem
    {
        public T Value;

        /// <summary>  Конструктор для константы  </summary>
        /// <param name="value">значение</param>
        /// <param name="repr">породившая строка</param>
        /// <param name="row">номер в таблице констант</param>
        /// <param name="posInText">позиция в тексте</param>
        public ConstLexem(T value, string repr, int row, PositionInText posInText) : base(repr, row, posInText)
        {
            Value = value;
            if (value is int) Type = LexemType.ConstInt;
            else if (value is double) Type = LexemType.ConstDouble;
            else if (value is string) Type = LexemType.ConstString;
            else Type = LexemType.Constant;
        }

        public override string ToString()
        {
            return "<C," + Row + ">";
        } 
    }
}
